In current large data storage applications, a client typically requests that a third party service store data for the client. For example, current data storage services provide data storage capabilities for clients who have registered with the service. In order to store data with the service, the clients send a request to store data along with the data itself in the same transaction. Thus, the client pushes the data to the service while the service is merely a repository for the data. Such push data models can take a lengthy amount of time to complete a transaction since the entire data file must be transferred before the transaction is completed. If the transaction is not completed before the client becomes unavailable, (e.g., client wireless device loses battery power) the entire transaction may have to be restarted which takes considerable time and resources.